RAND := $(shell awk 'BEGIN{srand();printf("%d", 65536*rand())}')
CHAPTER ?=

ifeq ($(CHAPTER), 3)
	LAB := 1
else ifeq ($(CHAPTER), 4)
	LAB := 2
else ifeq ($(CHAPTER), 5)
	INITPROC := 1
	LAB := 3
else ifeq ($(CHAPTER), 6)
	INITPROC := 1
	LAB := 4
else ifeq ($(CHAPTER), 7)
	INITPROC := 1
	LAB := 4
else ifeq ($(CHAPTER), 8)
	INITPROC := 1
	LAB := 5
endif

randomize:
	find user/src/bin -name "*.rs" | xargs perl -pi -e s,OK,OK$(RAND),g
	find user/src/bin -name "*.rs" | xargs perl -pi -e s,passed,passed$(RAND),g
	find check -name "*.py" | xargs perl -pi -e s,OK,OK$(RAND),g
	find check -name "*.py" | xargs perl -pi -e s,passed,passed$(RAND),g

test: randomize
	python3 overwrite.py $(CHAPTER)
	make -C user build BASE=2 TEST=$(CHAPTER) CHAPTER=$(CHAPTER)
ifdef INITPROC
	cp -f user/build/elf/ch$(CHAPTER)_usertest.elf user/build/elf/ch$(CHAPTER)b_initproc.elf
endif
	make -C ../os run | tee stdout-ch$(CHAPTER)
	python3 check/ch$(CHAPTER).py < stdout-ch$(CHAPTER)

ifdef LAB
	@for i in $(shell seq $(LAB)); do \
	if ! [ -f ../reports/lab$$i.pdf -o -f ../reports/lab$$i.md ]; then \
		echo "Report for lab$$i needed. Add your report to reports/lab$$i.pdf or reports/lab$$i.md" ; \
		exit 1 ; \
	else \
		echo "Report for lab$$i found." ; \
	fi; \
	done
endif

.PHONY: test randomize
